package com.ruoyi.training.mapper;

import java.util.List;

import com.ruoyi.examination.domain.PaperConfig;
import com.ruoyi.training.domain.ExamSchedule;
import com.ruoyi.training.dto.ExamScheduleDto;
import org.apache.ibatis.annotations.Param;

/**
 * 考试安排Mapper接口
 *
 * @author lqx
 * @date 2025-10-30
 */
public interface ExamScheduleMapper
{
    /**
     * 查询考试安排
     *
     * @param examScheduleId 考试安排主键
     * @return 考试安排
     */
    public ExamSchedule selectExamScheduleByExamScheduleId(String examScheduleId);

    /**
     * 查询考试安排列表
     *
     * @param examSchedule 考试安排
     * @return 考试安排集合
     */
    public List<ExamSchedule> selectExamScheduleList(ExamSchedule examSchedule);

    /**
     * 新增考试安排
     *
     * @param examSchedule 考试安排
     * @return 结果
     */
    public int insertExamSchedule(ExamSchedule examSchedule);

    /**
     * 修改考试安排
     *
     * @param examSchedule 考试安排
     * @return 结果
     */
    public int updateExamSchedule(ExamSchedule examSchedule);

    /**
     * 删除考试安排
     *
     * @param examScheduleId 考试安排主键
     * @return 结果
     */
    public int deleteExamScheduleByExamScheduleId(String examScheduleId);

    /**
     * 批量删除考试安排
     *
     * @param examScheduleIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteExamScheduleByExamScheduleIds(String[] examScheduleIds);

    /**
     * 通过班级id获取考试安排详细信息
     * lqx
     */
    public List<ExamSchedule> selectExamScheduleByClassId(String trainingClassId);

    /**
     *  通过班级id查询该班级已关联的历史考试ID列表
     */
    List<String> selectPaperConfigIdByClassId(@Param("trainingClassId") String trainingClassId);

    int batchDelete(@Param("trainingClassId") String trainingClassId, @Param("examIds") List<String> examIds);

    //通过试卷信息id查询试卷信息名字
    public PaperConfig selectPaperConfigNameByPaperConfigId(@Param("paperConfigId") String paperConfigId);

    //通过班级id和考试ids查询出对应的考试安排id
    public List<String> selectExamScheduleIdsByClassIdAndPaperConfigId(@Param("trainingClassId")String trainingClassId,@Param("deleteExamIds") List<String> deleteExamIds);

    //通过班级id和试卷信息id查询考试安排
    public ExamSchedule selectExamScheduleByTrainingClassIdAndPaperConfigId(String trainingClassId, String paperConfigId);
}
